Computer spreadsheet applications allows users to store, organize and relate large amounts of numerical data. Specifically, a spreadsheet typically comprises a plurality of cells, arranged in rows and columns wherein each cell is identified by its X-Y position in the spreadsheet. Groups of cells may be logically grouped within a spreadsheet to define a table, and a single spreadsheet may contain multiple tables. In addition to conventional two-dimensional spreadsheets, a “table” may also exist as a subset of data within an N-dimensional array. Additionally, a table may exist in a static form or a table may be dynamic such as when the table is related to a separate database that is periodically updated with new data or such as when a user manually adds or deletes data from the table.
One example of a database that allows dynamic tables to grow and contract is a banking database where information regarding a user's various bank accounts may be downloaded to a plurality of different tables within a spreadsheet. FIG. 1 illustrates such an exemplary spreadsheet 110 having a plurality of tables such as the tables 120, 130 and 140. Upon connection to an online database (such as a bank), the spreadsheet 110 may be automatically updated by importing new data into the table 120 that represents a user's checking account.
While previous spreadsheet applications could handle the importation of data into a table, these prior applications could not adequately address the situation where a table (such as the table 120 in FIG. 1) might grow so large that it runs into a lower table (such as the table 130 in FIG. 1). Some spreadsheet applications might refuse to accept any further data once the modified table bumps into a lower table, while other applications might allow a table to expand into and overwrite a lower table, thereby breaking the integrity of the lower table.
Even if a spreadsheet application were simply to insert new rows to account for the newly imported data, such row insertions might still destroy the integrity of lower tables (such as the tables 130 and 140 in FIG. 1) to the extent that portions of the lower tables might be pushed downward within the spreadsheet below the remainder of the table. Thus, using the example of FIG. 1, table 120 occupies a plurality of rows extending between columns C and F, while table 130 occupies a number of rows extending between columns B and H. Therefore, the insertion of rows between tables 120 and 130 within the column range C to F (to allow for the importation of new data within table 120) would tend to “break” table 130 by shifting the data in columns C to F below the other data in table 130. A similar result would be seen with table 140 where only two of the four columns of table 140 overlap the column range of table 120. Furthermore, similar problems would occur when data is deleted from table 120 (such as at the end of the month when the bank sends a written statement to its customers and deletes certain records from the online database).
It is with respect to these and other considerations that the present invention has been made.